A typical data communications network includes an interconnection of one or more data communications devices and data links that support the exchange of information between a number of host computer systems coupled to the network. A few interconnected devices (computer systems and data communications devices) may form such a network, or there may be many hundreds or thousands of such devices in a single network. Typically, an organization such as the federal government, a corporation, or an educational institution independently owns, manages and operates the data communications devices, computer systems and data links that form a data communications network. Those skilled in the art generally consider a network such as the Internet to be a large collection of the separate but interconnected, independently owned and managed data communications networks.
Generally, data communications networks operate by transporting data portions such as packets, cells, frames or the like (collectively referred to herein as packets) over the interconnection of data links in the network between various computer systems and data communications devices. Each computer system and data communications device on a data communications network typically requires at least one associated network address to perform data communications on the network. The network address is frequently a numerical arrangement such as an Internet Protocol (IP) address of the form “N.N.N.N” where each N ranges between “0” and “255”. An address uniquely identifies a device such as a single computer system within the network. Data communications devices can use the address of a specific computer system, for example, to route and deliver packets of data to that system as opposed to other computer systems within that network, much like a postal address uniquely identifies a specific delivery destination for a parcel of mail.
As an example, to send data through a data communications network, a source computer system (e.g., an end user host computer) creates a packet of data and places a destination address of a destination computer system into a field in the packet and then transmits the packet onto the network. Data communications devices in the network such as routers and switches that receive the packet can examine the destination address of the packet and can transmit the packet onto appropriate data link(s) in order to forward the packet towards the computer system specified by the destination address of the packet. Data packets travel across the network in this manner, data link by data link (i.e., hop by hop), until they eventually reach the portion of the network (i.e., the data link or sub-network) that contains a coupling to the computer system specified by the destination address in the packet. The destination computer system can detect and receive the packets and extract the data within the packets for use by an application.
The devices (computer systems and data communications devices such as routers and switches) within a single data communications network frequently are configured to operate using a set of related network addresses. The group or range of related addresses that can be used for devices within a network is sometimes called the “domain” of the network. To obtain a range of addresses for use in a network such as the Internet (i.e., to obtain a domain), a system administrator (a person responsible for managing devices and computer systems within a network) requests the domain from a network address assignment organization such as Network Solutions Corporation (formerly known as InterNIC). The purpose of the network address assignment organization is to ensure that a domain and any associated address range assigned to computer systems within a particular network is/are not duplicated elsewhere (e.g., within another interconnected network). An example of a network domain is the familiar “dot com” notation such as “company.com,” where “company” is the name of a commercial organization to which the domain is assigned. Within a data communications network, the domain “company.com” translates into a specific network address and defines a range of sub-addresses that can be used within a network of this domain.
Data communications system developers have created various prior art mechanisms to assign individual network addresses to devices that are coupled to a data communications network. As a simple example, a systems administrator can manually configure each computer system or data communications device in a network with a specific network address. A network address assigned to a particular computer system should, in most cases, be unique to that host. This avoids instances of address duplication in which two hosts are accidentally assigned the same network address. Address duplication is a common error that can occur when a systems administrator uses a manual configuration process to assign network addresses in a network.
Many computer networks are divided into sub-networks. Each sub-network typically couples a number of computer systems together that have a related purpose, such as the computer systems in an engineering department, an accounting department, and so forth. Typically, for proper network operation, a systems administrator should configure all computer systems coupled to a specific sub-network with a sub-range of related addresses. However, computer systems are sometimes moved from one sub-network to another. Each time a computer system is moved in this manner, the systems administrator must manually re-configure the address for the computer system to properly operate on the next sub-network to which it is coupled. Again, the process of manually configuring network addresses can become quite cumbersome and is prone to error.
To solve such problems and to simplify the process of assigning addresses to computer systems (or other networked devices), data communications system developers have created prior art address assignment protocols that can dynamically assign network addresses to computer systems and devices in an automated manner. One example of such a prior art address assignment protocol is the Dynamic Host Configuration Protocol (DHCP). While a brief overview of DHCP is provided below, complete details on the operation of DHCP can be found in the DHCP standard, which is fully documented in Request for Comment 2131 (RFC-2131) which is now an Internet standard and is maintained by the Internet Engineering Task Force (IETF). RFC-2131 is hereby incorporated by reference in its entirety. Documentation for such standardized network protocols including RFC-2131 is available on the World Wide Web at a web site maintained by the IETF.
A DHCP server maintains a range or set of available network addresses that may be dynamically assigned, as needed, to computer systems or other devices that couple to the network and request an address for use on that network from the DHCP server. More specifically, when a computer system is coupled to a sub-network within a network and is started-up or “booted” (i.e., the computer is powered on and begins operation), a DHCP client within the computer system sends a DHCP request message onto the network to request specific information required for operation within the network. The DHCP request message can include a request for an assignment of a network address for use by that computer system on the network. One or more DHCP servers that detect such a request can respond or “offer” to service the request. There might be a few DHCP servers in a network, for example, to provide redundancy in the event that one DHCP server fails in some manner. The DHCP client in the computer system initiating the original DHCP request message can receive the “offers” from each DHCP server and can select one of such offers. The DHCP client can thereafter communicate with that selected DHCP server to obtain the required network address (and possibly other configuration information). The selected DHCP server selects and assigns a network address from the range of available addresses (i.e., the domain) for the requesting computer system and returns the address to the computer system. The DHCP server then informs the other DHCP servers (if others exist) that the selected address is now in use on the network by a specific computer system and that this address should not be subsequently selected for assignment to another computer system until it is released by the computer system.
In this manner, computer systems can be coupled and de-coupled at any time to various sub-networks of a computer network and can negotiate with a DHCP server for an appropriate address for use on that network sub-network. DHCP thus avoids the process of manually configuring an address for use by each computer system each time that computer system is placed on the network or is moved from one sub-network to another.